
//声名专门的函数来分配Auth模态框中的树形结构数据
function fillAuthTree() {
    //1.发送ajax请求查询Auth的数据
    var ajaxReturn=$.ajax({
        url:"assign/get/all/auth.json",
        type:"post",
        dataType:"json",
        async:false
    });

    if (ajaxReturn.status !=200){
        layer.msg("请求处理出错！响应状态码是"+ajaxReturn.status+"说明是："+ajaxReturn.statusText);

        return ;
    }

    //2.从响应结果获取Auth的JSON数据
    var authList = ajaxReturn.responseJSON.data;

    //3.准备对zTree进行设置的JSON对象
    var setting = {
        data: {
            "simpleData": {
                //开启加暗淡JSON的功能
                "enable": true,
                //使用categoryId关联父节点
                "pIdKey": "categoryId"
            },

            key:{
                //不用默认的名字作为属性名
                "name": "title"
            }
        },

        "check": {
            "enable": true
        }
    };

    //4.生成树形结构
    $.fn.zTree.init($("#authTreeDemo"),setting,authList);


        //调用ztreeObj对象的方法，把节点展开
        var zTreeObj = $.fn.zTree.getZTreeObj("authTreeDemo");
        zTreeObj.expandAll(true);


    //5.查询已经分配的Auth组成的数组
    ajaxReturn = $.ajax({

        url:"assign/get/assign/authId/by/roleId.json",
        type:"post",
        data:{
            "roleId":window.roleId
        },
        "dataType":"json",
        "async":false
    });
    if(ajaxReturn.status != 200) {
        layer.msg(" 请求处理出错！ 响应状态码是： "+ajaxReturn.status+" 说明是："+ajaxReturn.statusText);
        return ;
    }
    //从响应结果中获取authIdList数据
    var authIdArray=ajaxReturn.responseJSON.data;
    //layer.msg(authIdArray);

    //6.根据authIdArray把树形结构的中对应节点勾选,遍历
    for (var i=0;i<authIdArray.length;i++){
        var authId =authIdArray[i];
        //根据id去查询树形结构中对应的节点
        var treeNode = zTreeObj.getNodeByParam("id",authId);

        //将treeNode设置为被勾选
        //这个参数是表示勾选节点
        var checked = true;
        //这个设置表示勾选方式表示为不联动勾选
        var checkTypeFlag = false;
        zTreeObj.checkNode(treeNode,checked,checkTypeFlag)
    }

}


// 声明专门的函数显示确认模态框
function showConfirmModal(roleArray) {

    //打开模态框
    $("#confirmModal").modal('show');

    //清除旧的数据
    $("#roleNameDiv").empty();

    //在全局范围创建一个 存放roleId的数组
    window.roleIdArray=[];

    //遍历roleArray数组
    for (var i=0;i<roleArray.length;i++){

        var role = roleArray[i];
        var roleName = role.roleName;

        $("#roleNameDiv").append(roleName+"</br>");


        var roleId = role.roleId;
        //调用数组对象的push方法存入元素
        window.roleIdArray.push(roleId);
    }

}







//执行分页，生成页面效果，任何时候调用这个函数都会重新加载
function generatePage() {
    //1.获取分页数据
    var pageInfo = getPageInfo();

    //2.调用填充表格
    fillTableBody(pageInfo);

    //3.

}

//远程访问服务器端程序获取pageInfo数据
function getPageInfo() {

    var ajaxResult = $.ajax({
        "url": "role/get/page/info.json",
        "type": "post",
        "data": {
            "pageNum": window.pageNum,
            "pageSize": window.pageSize,
            "keyword": window.keyword
        },
        "dataType": "json",
        "async": false

    });
    // console.log(ajaxResult);

    //当前响应码，服务器端判断
    var statusCode = ajaxResult.status;
    //当前响应码不是200，发生错误，提示信息
    if (statusCode != 200) {
        layer.msg("调用失败！响应状态码=" + statusCode + "说明信息=" + ajaxResult.statusText);
        return null;
    }

    //如果状态码是200，说明请求处理成功，获取pageInfo信息
    var resultEntity = ajaxResult.responseJSON;


    //从resultEntity中获取result属性
    var result = resultEntity.result;

    //判断result是否成功.逻辑上判断
    if (result == "FAILED") {
        layer.msg(resultEntity.message);
        return null;
    }
    //确认result成功后获取pageInfo
    var pageInfo = resultEntity.data;

    //返回pageInfo
    return pageInfo;


}

//填充表格
function fillTableBody(pageInfo) {

    //清除tbody中旧的数据
    $("#rolePageBody").empty();
    //这里是为了没有数据时不显示导航条
    $("#Pagination").empty();

    //判断pageInfo是否有效
    if (pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length == 0) {
        //append追加消息，colspan跨列数量
        $("#rolePageBody").append("<tr><td colspan='4'>抱歉，没有查询到你要查询的数据</td>></tr>>")
        return
    }

    //使用pageInfo的list属性填充tbody
    for (var i = 0; i < pageInfo.list.length; i++) {

        var role = pageInfo.list[i];
        var roleId = role.id;
        var roleName = role.name;

        var numberTd = "<td>" + (i + 1) + "</td>";
        var checkboxTd = "<td><input id='" + roleId + "' class='itemBox' type='checkbox'></td>";
        var roleNameTd = "<td>" + roleName + "</td>";

        var checkBtn = "<button id='" + roleId + "' type='button' class='btn btn-success btn-xs checkBtn'><i class=' glyphicon glyphicon-check'></i></button>";

        // 通过button标签的id属性（别的属性其实也可以）把roleId值传递到button按钮的单击响应函数中，在单击响应函数中使用this.id
        var pencilBtn = "<button id='" + roleId + "' type='button' class='btn btn-primary btn-xs pencilBtn'><i class=' glyphicon glyphicon-pencil'></i></button>";

        // 通过button标签的id属性（别的属性其实也可以）把roleId值传递到button按钮的单击响应函数中，在单击响应函数中使用this.id
        var removeBtn = "<button id='" + roleId + "' type='button' class='btn btn-danger btn-xs removeBtn'><i class=' glyphicon glyphicon-remove'></i></button>";

        var buttonTd = "<td>" + checkBtn + " " + pencilBtn + " " + removeBtn + "</td>";

        var tr = "<tr>" + numberTd + checkboxTd + roleNameTd + buttonTd + "</tr>";

        $("#rolePageBody").append(tr);

    }
    generateNavigator(pageInfo);
}

//生成分页页码导航条
function generateNavigator(pageInfo) {
    // 获取总记录数
    var totalRecord = pageInfo.total;
// 声明相关属性
    var properties = {
        "num_edge_entries": 3,
        "num_display_entries": 5,
        "callback": paginationCallBack,
        "items_per_page": pageInfo.pageSize,
        "current_page": pageInfo.pageNum - 1,
        "prev_text": "上一页",
        "next_text": "下一页"
    }
// 调用pagination()函数
    $("#Pagination").pagination(totalRecord, properties);

}

//翻页时的回调函数
function paginationCallBack(pageIndex, jQuery) {

    // 修改window 对象的pageNum 属性
    window.pageNum = pageIndex + 1;
    // 调用分页函数
    generatePage();
    // 取消页码超链接的默认行为
    return false;
}
